package app

import "gitee.com/yscsky/yu"

// App 内置App
type app struct {
	name  string
	start func() bool
	stop  func()
	svrs  []yu.IServer
}

// Name 实现 Name() string 接口
func (a *app) Name() string {
	return a.name
}

// Servers 实现 Servers() []IServer 接口
func (a *app) Servers() []yu.IServer {
	return a.svrs
}

// OnStart 实现 OnStart() bool 接口
func (a *app) OnStart() bool {
	if a.start == nil {
		//! 没有设置Start不能启动
		return false
	}
	return a.start()
}

// OnStop 实现 OnStop() 接口
func (a *app) OnStop() {
	if a.stop == nil {
		return
	}
	a.stop()
}

// NewApp 创建内置App
func NewApp(name string, start func() bool, stop func(), svrs ...yu.IServer) yu.IApp {
	return &app{
		name:  name,
		start: start,
		stop:  stop,
		svrs:  svrs,
	}
}
